// // 定义一个主体对象
// class Subject {
//   constructor() {
//     this.Observers = []
//   }
//   add(observer) {
//     //添加
//     this.Observers.push(observer)
//   }
//   remove(observer) {
//     //移除
//     this.Observers.filter((item) => item !== observer)
//   }
//   notify() {
//     this.Observers.forEach((item) => {
//       item.update()
//     })
//   }
// }
// //定义观察者对象
// class Observer {
//   constructor(name) {
//     this.name = name
//   }
//   update() {
//     console.log(`my name is:${this.name}`)
//   }
// }

// //测试
// let sub = new Subject()
// let obs1 = new Observer('leaf111')
// let obs2 = new Observer('leaf222')
// sub.add(obs1)
// sub.add(obs2)
// sub.notify()

class Pub {
  constructor() {
    this.Observers = []
  }
  add(observer) {
    this.Observers.push(observer)
  }
  remove(observer) {
    this.Observers.filter(item, (item) => item !== observer)
  }
  notify() {
    this.Observers.forEach((item) => item.update())
  }
}
class Observer {
  constructor(name) {
    this.name = name
  }
  update() {
    console.log('update' + this.name)
  }
}
let pub = new Pub()
let ob1 = new Observer('1')
let ob2 = new Observer('2')
pub.add(ob1)
pub.add(ob2)
pub.notify()
